package com.gxa.javaserver.controller;

import com.gxa.javaserver.dto.Response;
import com.gxa.javaserver.dto.ResultDO;
import com.gxa.javaserver.exception.LoginException;
import com.gxa.javaserver.pojo.Admin;
import com.gxa.javaserver.pojo.AdminVo;
import com.gxa.javaserver.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.Arrays;

@Controller
public class AdminController {

    @Autowired
    private AdminService adminService;

    /**
     * 后台首页
     * @return
     */
    @GetMapping({"/","/index"})
    public String index(){
        return "index";
    }

    /**
     * 欢迎页
     * @return
     */
    @GetMapping("/welcome")
    public String welcome(){
        return "welcome";
    }

    /**
     * 登录页
     * @return
     */
    @GetMapping("/login/page")
    public String loginPage(){
        return "login";
    }

    /**
     * 管理员列表界面
     * @return
     */
    @GetMapping("/admin/list/page")
    public String adminListPage(){
        return "admin/admin-list";
    }

    /**
     * 管理员数据列表
     * @param adminVo
     * @return
     */
    @PostMapping("/admin/list")
    @ResponseBody
    public ResultDO adminList(AdminVo adminVo){
        return adminService.list(adminVo);
    }

    /**
     * 管理员添加页面
     * @return
     */
    @GetMapping("admin/add/page")
    public String adminAddPage(){
        return "admin/admin-add";
    }

    /**
     * 添加管理员的方法
     * @param admin
     * @return
     */
    @PostMapping("/admin/add")
    @ResponseBody
    public ResultDO adminAdd(Admin admin){
        return adminService.add(admin);
    }

    /**
     * 登录的方法
     * @param admin :管理对象
     * @param session :session对象
     * @return
     */
    @PostMapping("/login/do")
    @ResponseBody
    public ResultDO login(Admin admin, HttpSession session)throws LoginException {
        return adminService.login(admin,session);
    }

    /**
     * 退出登录的方法
     * @return
     */
    @PostMapping("/logout")
    @ResponseBody
    public ResultDO logout(HttpSession session){
        //将session中保存的数据置为null
        session.setAttribute("admin",null);
        return Response.success();
    }

    /**
     *删除的操作
     * @param ids
     * @return
     */
    @PostMapping("/admin/delete")
    @ResponseBody
    public ResultDO delete(@RequestParam(name = "ids[]") String[] ids){
        return adminService.delete(ids);
    }
}
